/*
 * ChamadaProcedimentoFuncao.cpp
 *
 *  Created on: 19/11/2008
 *      Author: Thiago A. L. Genez
 */

#include "ChamadaProcedimentoFuncao.h"

ChamadaProcedimentoFuncao::ChamadaProcedimentoFuncao() {
	this->temParametros = false;
}

ChamadaProcedimentoFuncao::~ChamadaProcedimentoFuncao() {
}

void ChamadaProcedimentoFuncao::setExpressao(list<string> expressao) {
	this->expressao = expressao;
}

string ChamadaProcedimentoFuncao::getNomeProcedimentoFuncao() {
	return (this->nomeProcedimentoFuncao);
}
multimap<int, string> ChamadaProcedimentoFuncao::getParametros() {
	return (this->parametros);
}

bool ChamadaProcedimentoFuncao::getTemParametros() {
	return this->temParametros;
}

void ChamadaProcedimentoFuncao::organizarParametros() {
	list<string>::iterator it = this->expressao.begin();
	this->nomeProcedimentoFuncao = (*it);
	this->expressao.pop_front();
	this->temParametros = !this->expressao.empty();
	int i = 0;
	for (it = this->expressao.begin(); it != this->expressao.end(); it++) {
		if (((*it).compare("(") != 0) && ((*it).compare(")") != 0)
				&& ((*it).compare(",") != 0)) {
			this->parametros.insert(pair<int, string> (i, (*it)));

		}
		if ((*it).compare(",") == 0) {
			i++;
		}
	}
}
